home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / G-Games / (c)ge.d64 / stock 2.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  7KB  |  285 lines

  1. 1 REM     STOCK MARKET SIMULATION
  2. 2 REM  COPIED FROM BASIC COMPUTER GAMES
  3. 3 REM     EDITED BY BRIAN WALKER
  4. 4 REM            #8829
  5. 5 REM         FEBRUARY 1984
  6. 6 :
  7. 7 PRINT"[147][144]";
  8. 8 POKE 53281,1
  9. 9 POKE 53280,0
  10. 11 GOSUB 1080
  11. 110 DIM S(5),P(5),Z(5),C(5)
  12. 112 REM SLOPE OF MARKET TREND:A (SAME FOR ALL STOCKS)
  13. 113 LET X=1
  14. 114 LET A=INT((RND(-TI)/10)*100+.5)/100
  15. 115 LETYT T5=O
  16. 116 LET X9=0
  17. 117 LET N1=O
  18. 118 LET N2=O
  19. 119 LET E1=O
  20. 120 LET E2=O
  21. 121 REM INTRODUCTION
  22. 122 GOTO1100
  23. 127 PRINT"[147]"
  24. 128 PRINTTAB(15)"INSTRUCTIONS[146]"
  25. 129 PRINT:PRINT:PRINT
  26. 130 PRINT"     THIS PROGRAM PLAYS THE STOCKMARKET.";
  27. 135 PRINT"  YOU WILL BE GIVEN $10,000 AND MAY BUY";
  28. 140 PRINT" OR SELL STOCKS.  STOCK PRICES WILL BE   GENERATED RANDOMLY.";
  29. 145 PRINT"  A TABLE  OF AVAIL- ABLE STOCKS, THEIR PRICES, AND THE";
  30. 150 PRINT" NUM- BER OF SHARES IN YOUR PORTFOLIO WILL    ALSO BE PRINTED."
  31. 151 PRINT:PRINT:PRINT:PRINTTAB(10);"HIT ANY KEY TO CONTINUE[146]"
  32. 152 GET A$ : IF A$="" THEN 152
  33. 153 A$=""
  34. 154 PRINT"[147]"
  35. 155 PRINT"    AT THE BOTTOM OF THE CHART YOU WILL SEE THE ";
  36. 160 PRINT"STOCK'S INITIALS.  HERE YOU IND-ICATE WEITHER ";
  37. 170 PRINT"YOU WISH TO BUY, SELL, OR DO NRUNING.  ";
  38. 180 PRINT"TO BUY TYPE IN THE NUMBER  OF SHARES YOU WISH TO BUY (EX:50).";
  39. 185 PRINT"  TO  SELL TYPE IN THE NUMBER OF SHARES YOU   WISH TO SELL WITH A ";
  40. 190 PRINT"MINUS SIGN (-) IN   FRONT (EX:-50).  TO DO NOTHING ";
  41. 192 PRINT"TYPE IN A ZERO (0).  PRESS RETURN AFTER EACH     ENTRY."
  42. 193 PRINT"     A BROKERAGE FEE OF 1% IS CHARGED ON EACH TRANSACTION.";
  43. 194 PRINT"  'NOTE' IF A STOCK'S VALUE DROPS TO ZERO IT MAY REBOUND";
  44. 195 PRINT" TO A POSITIVE VALUE AGAIN.  YOU CANNOT BUY   STOCK WHEN THE PRICE";
  45. 196 PRINT" IS AT ZERO."
  46. 197 PRINT:PRINTSPC(2);" TO END TYPE '9999' IN FOR IBM STOCK[146]":PRINT
  47. 198 PRINTTAB(13);"****GOOD LUCK****":PRINT
  48. 199 PRINTTAB(10);"HIT ANY KEY TO CONTINUE[146]"
  49. 200 GET A$ : IF A$="" THEN 200
  50. 201 A$=""
  51. 202 REM GENERATIONS OF STOCK TABLE; INPUT REQUESTS
  52. 210 REM INITIAL STOCK VALUES
  53. 220 S(1)=100
  54. 240 S(3)=150
  55. 250 S(4)=140
  56. 260 S(5)=110
  57. 265 REM INITIAL T8 - # DAYS FOR FIRST TREND SLOPE (A)
  58. 266 LET T8=INT(4.99*RND(X)+1)
  59. 267 REM RANDOMIZE SIGN OF FIRST TREND SLOPE (A)
  60. 268 IF RND(X)>.5 THEN 270
  61. 269 LET A=-A
  62. 270 REM RANDOMIZE INITIAL VALUES
  63. 280 GOSUB 830
  64. 285 REM INITIAL PORTFOLIO CONTENTS
  65. 290 FOR I=1 TO 5
  66. 300 P(I)=0
  67. 305 LET Z(I)=0
  68. 310 NEXT I
  69. 320 PRINT
  70. 330 PRINT"[147]" : LET C = 10000
  71. 333 LET C=10000
  72. 338 REM INITIAL PORTFOLIO
  73. 340 PRINT;TAB(5)"STOCK";TAB(20)"INITIAL";TAB(29)"PRICE/SHARE"
  74. 341 PRINT
  75. 350 PRINT"BALLISTIC MISSILES";TAB(22)" IBM";TAB(30);S(1)
  76. 351 PRINT
  77. 352 PRINT"RED CROSS - U.S.A.";TAB(22)" RCA";TAB(30);S(2)
  78. 353 PRINT
  79. 354 PRINT"L. BUMRAP & JOKE";TAB(22)" LBJ";TAB(30);S(3)
  80. 355 PRINT
  81. 356 PRINT"AMERICAN BANKRUPT CO.";TAB(22)" ABC"TAB(30);S(4)
  82. 357 PRINT
  83. 358 PRINT"CENSURED BOOKS STORE";TAB(22)" CBS"TAB(30);S(5)
  84. 360 PRINT
  85. 361 REM NYSE AVERAGE:Z5; TEMP. VALUE:Z4; NET CHANGE:Z6
  86. 363 LET Z4=Z5
  87. 364 LET Z5=0
  88. 365 LET T=0
  89. 370 FOR I=1 TO 5
  90. 375 LET Z5=Z5+S(I)
  91. 380 LET T=T+S(I)*P(I)
  92. 390 NEXT I
  93. 391 LET Z5=INT(100*(Z5/5)+.5)/100
  94. 392 LET Z6=INT((Z5-Z4)*100+.5)/100
  95. 393 REM TOTAL ASSETS:D
  96. 394 LET D=T+C
  97. 395 IF X9>0 THEN 398
  98. 396 :
  99. 397 :
  100. 398 PRINT"   ********************************":
  101. 399 :
  102. 400 LET T=INT(100*T+.5)/100
  103. 401 PRINT"TOTAL STOCK ASSETS ARE   $";T
  104. 403 LET C=INT(100*C+.5)/100
  105. 405 PRINT"TOTAL CASH ASSETS ARE    $";C
  106. 407 LET D=INT(100*D+.5)/100
  107. 408 PRINT"TOTAL ASSETS ARE         $";D:
  108. 409 PRINT"   ********************************":
  109. 410 PRINT
  110. 411 IF X9=0 THEN 416
  111. 416 IF Q9=1 THEN 419
  112. 417 IF Q9=2 THEN 997
  113. 419 REM INPUT TRANSACTIONS
  114. 420 PRINT"WHAT IS YOUR TRANSACTION IN:"
  115. 430 PRINT"IBM          [157][157][157][157][157][157][157][157][157][157]";
  116. 431 INPUT Z(1)
  117. 440 IF Z(1)=9999 THEN 997
  118. 441 IF S(1)=0 THEN Z(1)=0
  119. 450 INPUT"[145]RCA          [157][157][157][157][157][157][157][157][157][157]";Z(2)
  120. 461 :
  121. 462 IF S(2)=0 THEN Z(2)=0
  122. 470 PRINT"[145]LBJ          [157][157][157][157][157][157][157][157][157][157]";
  123. 480 INPUTZ(3)
  124. 481 IF S(3)=0 THEN Z(3)=0 :
  125. 490 PRINT"[145]ABC          [157][157][157][157][157][157][157][157][157][157]";
  126. 500 INPUT Z(4)
  127. 501 IF S(4)=0 THEN Z(4)=0 :
  128. 510 PRINT"[145]CBS          [157][157][157][157][157][157][157][157][157][157]";
  129. 520 INPUT Z(5)
  130. 521 IF S(5)=0 THEN Z(5)=0 :
  131. 525 PRINT"[145]"
  132. 530 REM TOTAL DAY'S PURCHASES IN $:P5
  133. 540 LET P5=0
  134. 550 REM TOTAL DAY'S SALES IN $:S5
  135. 560 LET S5=0
  136. 570 FOR I=1 TO 5
  137. 575 LET Z(I)=INT(Z(I)+.5)
  138. 580 IF Z(I)<0  THEN 610
  139. 590 LET P5=P5+Z(I)*S(I)
  140. 600 GOTO 620
  141. 610 LET S5=S5-Z(I)*S(I)
  142. 612 IF -Z(I)<=P(I) THEN 620
  143. 614 PRINT"YOU HAVE OVERSOLD A STOCK, TRY AGAIN.[146]"
  144. 616 PRINT"[145][145][145]WHAT IS YOUR TRANSACTION IN" : GOTO430
  145. 620 NEXT I
  146. 622 REM TOTAL VALUE OF TRANSACTIONS:T5
  147. 625 LET T5=P5+S5
  148. 630 REM BROKERAGE FEE:B5
  149. 640 LET B5=INT(.01*T5*100+.5)/100
  150. 650 REM CASH ASSETS=OLD CASH ASSETS-TOTAL PURCHASES
  151. 652 REM -BROKERAGE FEES+TOTAL SALES:C5
  152. 654 LET C5=C-P5-B5+S5
  153. 656 IF C5>=0 THEN 674
  154. 658 PRINT"YOU HAVE USED $";ABS(C5)"[157] TO MUCH[146]"
  155. 660 PRINT"[145][145][145]WHAT IS YOUR TRANSACTION IN" : GOTO430
  156. 674 LET C=C5
  157. 675 REM CALCULATE NEW PORTFOLIO
  158. 680 FOR I=1 TO 5
  159. 690 LET P(I)=P(I)+Z(I)
  160. 700 NEXT I
  161. 710 REM CALCULATE NEW STOCK VALUES
  162. 720 GOSUB 830
  163. 749 REM ? PORTFOLIO
  164. 750 REM BELL RINGING-DIFFERENT ON MANY  COMPUTERS
  165. 752 FOR I=1 TO 20
  166. 753 PRINT CHR$(135);
  167. 754 NEXT I
  168. 755 PRINT"[147]"
  169. 756 PRINT"*********END OF DAY'S TRADING**********"
  170. 758 PRINT
  171. 768 PRINT"STOCK";TAB(7)"PRICE"TAB(15)"HOLDINGS";TAB(25)"VALUE";TAB(33)"CHANGE"
  172. 769 PRINT
  173. 770 PRINT"IBM";TAB(6);S(1);TAB(15);P(1);TAB(24);(S(1)*P(1));TAB(33);C(1):PRINT
  174. 771 PRINT"RCA";TAB(6);S(2);TAB(15);P(2);TAB(24);(S(2)*P(2));TAB(33);C(2):PRINT
  175. 772 PRINT"LBJ";TAB(6);S(3);TAB(15);P(3);TAB(24);(S(3)*P(3));TAB(33);C(3):PRINT
  176. 773 PRINT"ABC";TAB(6);S(4);TAB(15);P(4);TAB(24);(S(4)*P(4));TAB(33);C(4):PRINT
  177. 774 PRINT"CBS";TAB(6);S(5);TAB(15);P(5);TAB(24);(S(5)*P(5));TAB(33);C(5)
  178. 775 LET X9=1
  179. 790 PRINT
  180. 791 Z(1)=0
  181. 792 Z(2)=0
  182. 793 Z(3)=0
  183. 794 Z(4)=0
  184. 795 Z(5)=0
  185. 810 GOTO 360
  186. 829 REM NEW STOCK VALUES - SUBROUTINE
  187. 830 REM RANDOMLY PRODUCE NEW STOCK VALUES BASED ON PREVIOUS
  188. 831 REM DAY'S VALUES
  189. 832 REM N1,N2 ARE RANDOM NUMBERS OF DAY'S WHICH RESPECTIVELY
  190. 833 REM DETERMINE WHEN STOCK I1 WILL INCREASE 10 PTS. AND STOCK
  191. 834 REM 12 WILL DECREASE 10 PTS.
  192. 840 REM IF N1 DAY'S HAVE PASSED, PICK AN I1, SET E1, DETERMINE NEW N1
  193. 841 IF N1>0 THEN 850
  194. 845 LET I1=INT(4.99*RND(X)+1)
  195. 846 LET N1=INT(4.99*RND(X)+1)
  196. 847 LET E1=1
  197. 850 REM IF N2 DAYS HAVE PASSED, PICK AN I2, SET E2, DETERMINE NEW N2
  198. 851 IF N2>0 THEN 860
  199. 855 LET I2=INT(4.99*RND(X)+1)
  200. 856 LET N2=INT(4.99*RND(X)+1)
  201. 857 LET E2=1
  202. 860 REM DEDUCT ONE DAY FROM N1 AND N2
  203. 861 LET N1=N1-1
  204. 862 LET N2=N2-1
  205. 890 REM LOOP THROUGH ALL STOCKS
  206. 900 FOR I=1 TO 5
  207. 910 LET X1=RND(X)
  208. 915 IF X1>.25 THEN 920
  209. 916 LET X1=.25
  210. 917 GOTO 935
  211. 920 IF X1>.50 THEN 925
  212. 921 LET X1=.50
  213. 922 GOTO 935
  214. 925 IF X1>.75 THEN 930
  215. 926 LET X1=.75
  216. 927 GOTO 935
  217. 930 LET X1=0.0
  218. 931 REM BIG CHANGE CONSTANT:W3  (SET TO ZERO INITIALLY)
  219. 935 LET W3=0
  220. 936 IF E1<1 THEN 945
  221. 937 IF INT(I1+.5)<>INT(I+.5) THEN 945
  222. 938 REM ADD 10 PTS. TO THIS STOCK;  RESET E1
  223. 939 LET W3=10
  224. 943 LET E1=0
  225. 945 IF E2<1 THEN 955
  226. 947 IF INT(12+.5)<>INT(I+.5) THEN 955
  227. 948 REM SUBTRACT 10 PTS. FROM THIS STOCK;  RESET E2
  228. 949 LET W3=W3-10
  229. 953 LET E2=0
  230. 954 REM C(I) IS CHANGE IN STOCK VALUE
  231. 955 LET C(I)=INT(A*S(I))+X1+INT(3-6*RND(X)+.5)+W3
  232. 956 LET C(I)=INT(100*C(I)+.5)/100
  233. 957 LET S(I)=S(I)+C(I)
  234. 960 IF S(I)>0 THEN 967
  235. 964 LET C(I)=0
  236. 965 LET S(I)=0
  237. 966 GOTO 970
  238. 967 LET S(I)=INT(100*S(I)+.5)/100
  239. 970 NEXT I
  240. 972 REM AFTER T8 DAYS RANDOMOLY CHANGE TREND SIGN AND SLOPE
  241. 973 LET T8=T8-1
  242. 980 RETURN
  243. 985 REM RANDOMLY CHANGE TREND SIGN AND SLOPE (A), AND DURATION
  244. 986 REM OF TREND (T8)
  245. 990 LET T8=INT(4.99*RND(X)+1)0+.5)/100
  246. 992 LET A=INT ((RND(X)/10)*100+.5)/100
  247. 993 LET S4=RND(X)
  248. 994 IF S4<=.5 THEN 997
  249. 995 LET A=-A
  250. 996 RETURN
  251. 997 PRINT"[147]"
  252. 998 PRINT TAB(11)"HOPE YOU HAD FUN!![146]"
  253. 999 PRINT "YOUR TOTAL ASSETS WERE $";D
  254. 1000 IF D<10000 GOTO 1050
  255. 1010 IF D>=10000 AND D <30000 GOTO 1060
  256. 1020 IF D>=30000 GOTO 1070
  257. 1050 PRINT"YOU WILL NEVER BE A MONEY WIZARD" : GOTO 1079
  258. 1060 PRINT"FAIR EFFORT BUT NEEDS A LOT OF WORK" : GOTO 1079
  259. 1070 PRINT"VERY NICELY DONE, "
  260. 1071 PRINT"   ON A SCALE OF 1 TO 10, A 15":GOTO 1079
  261. 1079 FOR X=1TO5000 : NEXTX :GOTO 112
  262. 1080 REM ***** TITLE PAGE *****
  263. 1082 T1$="TORONTO"
  264. 1084 T2$="STOCK - MARKET"
  265. 1088 FOR I=1TO38: PRINT"[166][146]";:NEXT
  266. 1089 FOR I=1TO22: PRINT"[157][166][146]";:NEXT
  267. 1090 FOR I=1TO37: PRINT"[157][157][166][146]";:NEXT
  268. 1091 FOR I=1TO22: PRINT"[145][157][166][146]";:NEXT
  269. 1093 PRINT"";T1$
  270. 1094 PRINT"";T2$
  271. 1095 PRINT"";T3$
  272. 1096 FOR X = 1 TO 2500 : NEXT X
  273. 1097 X=0 : RETURN
  274. 1100 PRINT"[147]":PRINT"OPTIONS[146]"
  275. 1110 PRINT"1) START"
  276. 1120 PRINT"2) INSTRUCTIONS"
  277. 1130 PRINT"3) END"
  278. 1131 PRINT:PRINT:PRINT:PRINT:PRINTTAB(9);"PLEASE SELECT A NUMBER[146]"
  279. 1135 GET X$ : IF X$="" THEN 1135
  280. 1140 IF X$="1" THEN PRINT"[147]PLEASE WAIT": GOTO 201
  281. 1142 IF X$="2" THEN GOTO 127
  282. 1144 IF X$="3" THEN GOTO 1200
  283. 1200 PRINT"[147]"
  284. 1202 END
  285.